#!/bin/bash

# x11vnc UTF-8剪贴板测试停止脚本

set -e

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'

# 打印函数
print_info() {
    echo -e "${BLUE}[INFO]${NC} $1"
}

print_success() {
    echo -e "${GREEN}[SUCCESS]${NC} $1"
}

print_warning() {
    echo -e "${YELLOW}[WARNING]${NC} $1"
}

print_error() {
    echo -e "${RED}[ERROR]${NC} $1"
}

# 文件路径
PID_FILE="/tmp/x11vnc_utf8_test.pid"
LOG_FILE="/tmp/x11vnc_utf8_test.log"

print_info "=== 停止x11vnc UTF-8剪贴板测试 ==="

# 检查PID文件
if [ ! -f "$PID_FILE" ]; then
    print_warning "PID文件不存在，x11vnc可能未运行"
    exit 0
fi

# 读取PID
PID=$(cat "$PID_FILE")

# 检查进程是否存在
if ! ps -p "$PID" > /dev/null 2>&1; then
    print_warning "进程 $PID 不存在，清理PID文件"
    rm -f "$PID_FILE"
    exit 0
fi

# 停止进程
print_info "停止x11vnc进程 (PID: $PID)..."
kill "$PID"

# 等待进程结束
for i in {1..10}; do
    if ! ps -p "$PID" > /dev/null 2>&1; then
        print_success "✅ x11vnc已停止"
        break
    fi
    sleep 1
    print_info "等待进程结束... ($i/10)"
done

# 如果进程仍在运行，强制杀死
if ps -p "$PID" > /dev/null 2>&1; then
    print_warning "强制停止进程..."
    kill -9 "$PID"
    sleep 1
    if ! ps -p "$PID" > /dev/null 2>&1; then
        print_success "✅ x11vnc已强制停止"
    else
        print_error "❌ 无法停止进程 $PID"
        exit 1
    fi
fi

# 清理文件
rm -f "$PID_FILE"
print_info "已清理PID文件"

# 显示日志信息
if [ -f "$LOG_FILE" ]; then
    LOG_SIZE=$(du -h "$LOG_FILE" | cut -f1)
    print_info "日志文件大小: $LOG_SIZE"
    print_info "日志文件位置: $LOG_FILE"
    print_info "如需清理，请运行: rm $LOG_FILE"
fi

# 检查端口
if netstat -ln 2>/dev/null | grep -q ":5900.*LISTEN"; then
    print_warning "⚠️  端口5900仍在被其他进程占用"
    print_info "检查占用进程:"
    netstat -lnp 2>/dev/null | grep ":5900.*LISTEN"
else
    print_success "✅ 端口5900已释放"
fi

print_success "=== 停止完成 ==="
